import type { RouteRecordRaw } from 'vue-router'
function getAllRoutes() {
  const allRoutes: RouteRecordRaw[] = []
  const files: Record<string, any> = import.meta.glob('../router/main/**/*.ts', {
    eager: true,
  })
  for (let key in files) {
    allRoutes.push(files[key].default)
  }
  return allRoutes
}

// 设置第一次进入页面应该激活的菜单
export let firstMemu: any = null

export function mapMenusToRoute(menus: any[]) {
  // 5.1 获取所有的路由规则
  const allRoutes = getAllRoutes()
  // 5.2 筛选出符合条件的路由
  const permissionRoutes: RouteRecordRaw[] = []
  menus.forEach((item, idnex) => {
    item.children.forEach((subItm, ind) => {
      const res = allRoutes.find((route, i) => route.path === subItm.route) // 所有的路由里面包含  children-item 中的路由
      if (res) {
        // 将“系统总览”、“系统管理”顶层菜单也添加到路由里面，并重定向到第一个children的route，面包屑里面要点击跳转
        if (ind === 0) {
          permissionRoutes.push({ name: item.name, path: item.route, redirect: subItm.route })
        }
        permissionRoutes.push(res)
      }
      // 设置第一个菜单的路径
      if (firstMemu === null && res) {
        firstMemu = subItm // 这边设置为一个对象，在设置menu的默认激活菜单时，需要使用到它的id
      }
    })
  })
  return permissionRoutes
}

// 匹配路径到菜单
export function mapRouteToMenus(path, menus) {
  const menuItemList = menus.reduce((pre: any[], current: any) => {
    pre.push(...current.children)
    return pre
  }, [])
  const res = menuItemList.find((item: any) => item.route === path)
  return res
}

// 匹配路径到面包屑
export function mapRouteToBread(path, menus) {
  return menus.reduce((pre, current) => {
    current.children.forEach((item) => {
      if (item.route === path) {
        pre.push({ name: current.name, path: current.route }) // 顶级菜单的路径，这个路径在permissionRoutes中匹配到后会进行重定向
        pre.push({ name: item.name, path: item.route })
      }
    })
    return pre
  }, [])
}
